#pragma once

#include <memory>

namespace strategy {
    enum StrategyType {
        Add,
        Sub,
        Mul,
        Div
    };
}

class IStrategy
{
private:
    /* data */
public:
    IStrategy() = default;
    ~IStrategy() = default;

    virtual double Calculate(double a, double b) const = 0; // 计算结果
};

using IStrategy_ptr = std::shared_ptr<IStrategy>;